#ifndef _CORE_POINT_H
#define _CORE_POINT_H
namespace Core
{
	template<typename T>
	class Point
	{
	public:
		Point(T x, T y)
		{
			_x = x;
			_y = y;
		}

		Point()
		{
			_x = (T)0;
			_y = (T)0;
		}

		~Point(){}

		//maybe height
		T Y() const { return _y; }
		//maybe width
		T X() const { return _x; }

		void Y(T val) { _y = val; }
		void X(T val) { _x = val; }

		Point& operator=(Point& other)
		{
			_x = other.X();
			_y = other.Y();
			return *this;
		}
	private:
		T _x;		
		
		T _y;
		
	};

	typedef Point<int> Sizei;
	typedef Point<float> Sizef;
	typedef Point<double> Sized;

	typedef Point<int> Pointi;
	typedef Point<float> Pointf;
	typedef Point<double> Pointd;
}

#endif